package d1_midterm_examination.d2_SecondQuestion;

import java.time.LocalDate;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class OkTest {
    public static void main(String[] args) {
        //目标: 完成字符串的操作
        //1、字符串数据拿过来
        String userStrs = "10001:张三:男:1990-01-01#10002:李四:女:1989-01-09#10003:王五:男:1999-09-09#10004:刘备:男:1899-01-01#10005:孙悟空:男:1900-01-01#10006:张三:女:1999-01-01#10007:刘备:女:1999-01-01#10008:张三:女:2003-07-01#10009:猪八戒:男:1900-01-01";

        //2、创建一个用户类-->用于封装切割得到的数据
        //3、创建一个集合用于存储用户对象
        List<User> users = new ArrayList<>();

        //4、根据#切字符串,获取每个用的的信息字符串
        String[] userStr = userStrs.split("#");

        //5、遍历每个userStr,获取每个用户的信息字符串,然后做处理
        for (String userInfos: userStr) {
            //6、创建对象,封装用户信息
            User user = new User();
            //7、将对象对应的数据存入到,对象中
            String[] userInfo = userInfos.split(":");
            user.setId(Long.parseLong(userInfo[0]));
            user.setName(userInfo[1]);
            user.setGender(userInfo[2]);
            user.setBirthday(LocalDate.parse(userInfo[3]));
            //8、将对象存入到集合中
            users.add(user);
        }
        //9、展示集合的数据
        System.out.println(users);
        System.out.println("-------------");
        //10、将每个用对象的名字作为键,次数作为值,存到Map集合中去,并遍历集合-->首先创建一个Map集合
        Map<String, Integer> result = new HashMap<>();

        //11、遍历users,获取每一个用户对象
        for (User user : users) {

            //12、判断该用户是否是第一次存到集合
            String name = user.getName();
            if (!result.containsKey(name)){
                //如果是第一次,存入到集合
                result.put(name, 1);
            }else{
                //否则在集合中已经是存在了
                result.put(name,result.get(name) + 1);
            }
        }

        //13、遍历集合-->输出题目要求的结果
        result.forEach((k,v)-> System.out.println(k+ ":" + v +"次"));
    }

}
